home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- . /lib/partman/lib/base.sh
-
- # At least one file system to mount on /
- no_root () {
- mountpoints=$(
- for i in /lib/partman/fstab.d/*; do
- [ -x "$i" ] || continue
- $i
- done |
- while read fs mp type options dump pass; do
- echo $mp
- done
- )
-
- for mp in $mountpoints; do
- if [ "$mp" = / ]; then
- return 0
- fi
- done
-
- db_capb align
- db_input critical partman-target/no_root || true
- db_go || true
- db_capb backup align
- exit 1
- }
-
- # No two file systems with one and the same mount point
- same_mountpoints () {
- mountpoints=$(
- for i in /lib/partman/fstab.d/*; do
- [ -x "$i" ] || continue
- $i
- done |
- while read fs mp type options dump pass; do
- case "$mp" in
- (/*)
- echo $mp,$fs;;
- esac
- done |
- sort
- )
-
- oldmp=' '
- for x in $mountpoints; do
- mp=${x%,*}
- fs=${x##*,}
- if [ "$mp" = "$oldmp" ]; then
- db_subst partman-target/same_mountpoint PART1 $(humandev $oldfs)
- db_subst partman-target/same_mountpoint PART2 $(humandev $fs)
- db_subst partman-target/same_mountpoint MOUNTPOINT "$mp"
- db_capb align
- db_input critical partman-target/same_mountpoint || true
- db_go || true
- db_capb backup align
- exit 1
- else
- oldmp="$mp"
- oldfs="$fs"
- fi
- done
- }
-
- # Some directories must be on the root file system
- must_be_on_root () {
- mountpoints=$(
- for i in /lib/partman/fstab.d/*; do
- [ -x "$i" ] || continue
- $i
- done |
- while read fs mp type options dump pass; do
- echo $mp
- done
- )
-
- for mp in $mountpoints; do
- case $mp in
- /bin|/etc|/lib*|/media|/sbin)
- db_subst partman-target/must_be_on_root MOUNTPOINT "$mp"
- db_capb align
- db_input critical partman-target/must_be_on_root || true
- db_go || true
- db_capb backup align
- exit 1
- esac
- done
- }
-
- no_root
- same_mountpoints
- must_be_on_root
-